package com.guiji.job.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.guiji.common.core.domain.AjaxResult;
import com.guiji.job.domain.Job;
import com.guiji.job.vo.JobVo;
import com.guiji.job.bo.JobQueryBo;
import com.guiji.job.bo.JobAddBo;
import com.guiji.job.bo.JobEditBo;
import com.guiji.common.core.mybatisplus.core.IServicePlus;
import com.guiji.common.core.page.TableDataInfo;
import com.guiji.job.vo.UnTagListVo;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 任务主Service接口
 *
 * @author 钟维澎（四月）
 * @date 2021-07-02
 */
public interface IJobService extends IServicePlus<Job> {
	/**
	 * 查询单个
	 * @return
	 */
	JobVo queryById(Long id);

	/**
	 * 查询待打标列表
	 */
	TableDataInfo<UnTagListVo> queryPendingList(JobQueryBo bo);

	/**
	 * 查询列表
	 */
	TableDataInfo<JobVo> queryPageList(JobQueryBo bo);

	/**
	 * 查询列表
	 */
	List<JobVo> queryList(JobQueryBo bo);

	/**
	 * 根据新增业务对象插入任务主
	 * @param bo 任务主新增业务对象
	 * @return
	 */
	Boolean insertByAddBo(JobAddBo bo);

	/**
	 * 根据编辑业务对象修改任务主
	 * @param bo 任务主编辑业务对象
	 * @return
	 */
	Boolean updateByEditBo(JobEditBo bo);

	/**
	 * 校验并删除数据
	 * @param ids 主键集合
	 * @param isValid 是否校验,true-删除前校验,false-不校验
	 * @return
	 */
	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

	/**
	 * 查询待审核列表
	 * @param bo
	 * @return
	 */
	TableDataInfo<UnTagListVo> queryUncheckPageList(JobQueryBo bo);

	/**
	 * 获取es索引列表
	 * @return
	 */
	Set<String> getEsIndex();

	/**
	 * 批量插入es
	 * @return
	 */
	AjaxResult bulkInsertEs(JobQueryBo bo);

	/**
	 * 统计状态
	 * @return
	 */
	TableDataInfo<Map> countStatus();
}
